Skip to main content

端口与服务监听详解

掌握端口与服务监听的概念和实践,是开发与部署 Web 应用和网络服务的基础技能。


🧠 什么是端口(Port)?

端口是主机用于区分不同网络服务的“门牌号”。

  • 端口号范围:0 - 65535
  • 常用端口:
服务默认端口
HTTP80
HTTPS443
SSH22
MySQL3306
Redis6379

📡 什么是服务监听(Listening)?

监听指的是:程序告知操作系统“我负责处理某个端口上的网络请求”。

  • Web 服务器监听 80/443
  • 本地开发监听 3000、8000 等端口

🛠️ 使用场景

场景描述
Node.js 开发app.listen(3000) 启动本地服务
多服务协作API 服务监听 5000,管理面板监听 8080
容器部署映射容器端口到宿主机
云平台(如 K8s)服务监听内部端口 + Ingress 映射外部访问

🧑‍💻 代码示例

✅ Node.js 监听端口

const express = require("express");
const app = express();

app.get("/", (req, res) => res.send("Hello World"));

app.listen(3000, "0.0.0.0", () => {
console.log("服务已启动:http://localhost:3000");
});

✅ Flask 示例(Python)

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello():
return "Hello Flask"

# 监听所有 IP 的 5000 端口
app.run(host='0.0.0.0', port=5000)

✅ .NET Core 配置监听

builder.WebHost.ConfigureKestrel(options =>
{
options.ListenAnyIP(8080); // 对外监听 8080 端口
});

🔍 如何查看端口监听情况?

sudo netstat -tulnp      # 查看监听端口
sudo lsof -i :3000 # 查看某端口占用情况

🧩 常见问题与解决

问题解决方法
端口已被占用使用 lsofnetstat 查看占用并释放
服务监听但外部访问不到确保监听地址为 0.0.0.0,不是 127.0.0.1
Docker 中无法访问确认是否 -p 3000:3000 正确映射
云平台访问失败安全组未放行,检查端口防火墙设置

🛡️ 最佳实践

本地服务监听建议
  • 默认监听 127.0.0.1,仅限本机访问
  • 若需外部访问,改为监听 0.0.0.0
端口规划建议
  • 3000~3999:前端/本地 Web 应用
  • 5000~5999:后端 API 服务
  • 8000~8999:管理面板或调试工具
服务部署注意
  • 若服务使用 443,必须配置证书
  • 建议用反向代理(如 Nginx)统一入口

📚 推荐资源